home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / include / linux / bsg.h < prev    next >
Encoding:
C/C++ Source or Header  |  2009-09-09  |  2.0 KB  |  56 lines

  1. #ifndef BSG_H
  2. #define BSG_H
  3.  
  4. #define BSG_PROTOCOL_SCSI        0
  5.  
  6. #define BSG_SUB_PROTOCOL_SCSI_CMD    0
  7. #define BSG_SUB_PROTOCOL_SCSI_TMF    1
  8. #define BSG_SUB_PROTOCOL_SCSI_TRANSPORT    2
  9.  
  10. struct sg_io_v4 {
  11.     __s32 guard;        /* [i] 'Q' to differentiate from v3 */
  12.     __u32 protocol;        /* [i] 0 -> SCSI , .... */
  13.     __u32 subprotocol;    /* [i] 0 -> SCSI command, 1 -> SCSI task
  14.                    management function, .... */
  15.  
  16.     __u32 request_len;    /* [i] in bytes */
  17.     __u64 request;        /* [i], [*i] {SCSI: cdb} */
  18.     __u64 request_tag;    /* [i] {SCSI: task tag (only if flagged)} */
  19.     __u32 request_attr;    /* [i] {SCSI: task attribute} */
  20.     __u32 request_priority;    /* [i] {SCSI: task priority} */
  21.     __u32 request_extra;    /* [i] {spare, for padding} */
  22.     __u32 max_response_len;    /* [i] in bytes */
  23.     __u64 response;        /* [i], [*o] {SCSI: (auto)sense data} */
  24.  
  25.         /* "dout_": data out (to device); "din_": data in (from device) */
  26.     __u32 dout_iovec_count;    /* [i] 0 -> "flat" dout transfer else
  27.                    dout_xfer points to array of iovec */
  28.     __u32 dout_xfer_len;    /* [i] bytes to be transferred to device */
  29.     __u32 din_iovec_count;    /* [i] 0 -> "flat" din transfer */
  30.     __u32 din_xfer_len;    /* [i] bytes to be transferred from device */
  31.     __u64 dout_xferp;    /* [i], [*i] */
  32.     __u64 din_xferp;    /* [i], [*o] */
  33.  
  34.     __u32 timeout;        /* [i] units: millisecond */
  35.     __u32 flags;        /* [i] bit mask */
  36.     __u64 usr_ptr;        /* [i->o] unused internally */
  37.     __u32 spare_in;        /* [i] */
  38.  
  39.     __u32 driver_status;    /* [o] 0 -> ok */
  40.     __u32 transport_status;    /* [o] 0 -> ok */
  41.     __u32 device_status;    /* [o] {SCSI: command completion status} */
  42.     __u32 retry_delay;    /* [o] {SCSI: status auxiliary information} */
  43.     __u32 info;        /* [o] additional information */
  44.     __u32 duration;        /* [o] time to complete, in milliseconds */
  45.     __u32 response_len;    /* [o] bytes of response actually written */
  46.     __s32 din_resid;    /* [o] din_xfer_len - actual_din_xfer_len */
  47.     __s32 dout_resid;    /* [o] dout_xfer_len - actual_dout_xfer_len */
  48.     __u64 generated_tag;    /* [o] {SCSI: transport generated task tag} */
  49.     __u32 spare_out;    /* [o] */
  50.  
  51.     __u32 padding;
  52. };
  53.  
  54.  
  55. #endif
  56.